package org.ch02.test09.demo02;

import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;

/**
 * 希望，只读取或写入 JavaBean 中的某个属性
 *
 * @author ZJL
 * @date 2025-03-25
 */
public class MainTest02 {
    public static void main(String[] args) throws Exception {
        // 实例化 Person 对象 - JavaBean 对象
        Person bean = new Person("zing", 18);

        // 创建 PropertyDescriptor 对象
        PropertyDescriptor nameProperty = new PropertyDescriptor("name", Person.class);

        // 获取 name属性对应的 getter 方法 - 读（read）
        Method readMethod = nameProperty.getReadMethod();

        // 获取 name属性对应的 setter 方法 - 写（write）
        Method writeMethod = nameProperty.getWriteMethod();

        // 回归反射 API ,调用 setter/getter 方法
        writeMethod.invoke(bean, "张三");
        Object name = readMethod.invoke(bean);
        System.out.println("姓名: " + name);
    }
}
